package com.briup.oagg.dataset.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.briup.oagg.dataset.bean.basic.Basin;
import com.briup.oagg.dataset.bean.ext.TreeInfo;
import com.briup.oagg.dataset.web.vm.BasinAddVM;
import com.briup.oagg.dataset.web.vm.BasinUpdateVM;

import java.util.List;

/**
 * 盆地信息业务逻辑接口
 *
 * @author briup
 */
public interface IBasinService extends IService<Basin> {

    /**
     * 新增盆地（通过输入名称和特征描述信息保存信息。输入信息都必填。名称不能重复。）
     *
     * @param vm 新增盆地参数
     */
    void addBasin(BasinAddVM vm);

    /**
     * 修改盆地(只能修改描述信息)
     *
     * @param vm 修改盆地参数
     */
    void updateBasin(BasinUpdateVM vm);

    /**
     * 根据盆地编号删除盆地信息及其对应的区带信息
     *
     * @param basinId 盆地编号
     */
    void deleteById(String basinId);

    /**
     * 分页查询盆地信息
     *
     * @param pageNum 当前页码
     * @param pageSize 每页大小
     * @return 盆地分页信息
     */
    Page<Basin> findByPage(Integer pageNum, Integer pageSize);

    /**
     * 统计所有盆地数量
     * @return 盆地数量
     */
    int countNum();
    /**
     * 查询所有的地质信息，以树形结构展示
     *
     * @return 盆地信息树
     */
    List<TreeInfo> findByTree();
}
